home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 November: Tool Chest / Dev.CD Nov 98 TC.toast / Tool Chest / QuickTime / QuickTime Tools / DrawTextCodec Example / Sample code / Movies.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-06-12  |  40.0 KB  |  1,268 lines  |  [TEXT/MPS ]

  1.  
  2. /************************************************************
  3.  
  4. Created: Wednesday, August 14, 1991 at 12:23 PM
  5.  Movies.h
  6.  C Interface to the Macintosh Libraries
  7.  
  8.  
  9.   Copyright Apple Computer, Inc. 1991
  10.   All rights reserved
  11.  
  12.  
  13. ************************************************************/
  14.  
  15.  
  16. #ifndef __MOVIES__
  17. #define __MOVIES__
  18.  
  19. #ifndef __QUICKDRAW__
  20. #include <QuickDraw.h>
  21. #endif
  22.  
  23. #ifndef __ALIASES__
  24. #include <Aliases.h>
  25. #endif
  26.  
  27. #ifndef __EVENTS__
  28. #include <Events.h>
  29. #endif
  30.  
  31. #ifndef __COMPONENTS__
  32. #include <Components.h>
  33. #endif
  34.  
  35. #ifndef __IMAGECOMPRESSION__
  36. #include <ImageCompression.h>
  37. #endif
  38.  
  39.  
  40. #define gestaltQuickTime 'qtim'
  41.  
  42. #define MovieFileType 'MooV'
  43.  
  44. #define VideoMediaType 'vide'
  45. #define SoundMediaType 'soun'
  46.  
  47. #define DoTheRightThing 0L
  48.  
  49. #define kFullVolume 0x100            /* 8.8 format */
  50. #define kNoVolume 0
  51.  
  52. struct MovieRecord {
  53.  long data[1];
  54. };
  55.  
  56. typedef struct MovieRecord MovieRecord;
  57. typedef MovieRecord *Movie;
  58.  
  59. struct TrackRecord {
  60.  long data[1];
  61. };
  62.  
  63. typedef struct TrackRecord TrackRecord;
  64. typedef TrackRecord *Track;
  65.  
  66. struct MediaRecord {
  67.  long data[1];
  68. };
  69.  
  70. typedef struct MediaRecord MediaRecord;
  71. typedef MediaRecord *Media;
  72.  
  73. struct UserDataRecord {
  74.  long data[1];
  75. };
  76.  
  77. typedef struct UserDataRecord UserDataRecord;
  78. typedef UserDataRecord *UserData;
  79.  
  80. struct TrackEditStateRecord {
  81.  long data[1];
  82. };
  83.  
  84. typedef struct TrackEditStateRecord TrackEditStateRecord;
  85. typedef TrackEditStateRecord *TrackEditState;
  86.  
  87. struct MovieEditStateRecord {
  88.  long data[1];
  89. };
  90.  
  91. typedef struct MovieEditStateRecord MovieEditStateRecord;
  92. typedef MovieEditStateRecord *MovieEditState;
  93.  
  94.  
  95. typedef long TimeValue;
  96. typedef long TimeScale;
  97.  
  98. struct TimeBaseRecord {
  99.  long data[1];
  100. };
  101.  
  102. typedef struct TimeBaseRecord TimeBaseRecord;
  103. typedef TimeBaseRecord *TimeBase;
  104.  
  105. struct CallBackRecord {
  106.  long data[1];
  107. };
  108.  
  109. typedef struct CallBackRecord CallBackRecord;
  110. typedef CallBackRecord *QTCallBack;
  111.  
  112.  
  113. struct Int64 {
  114.  long hi;
  115.  long lo;
  116. };
  117.  
  118. typedef struct Int64 Int64;
  119.  
  120. struct TimeRecord {
  121.  Int64 value;
  122.  TimeScale scale;
  123.  TimeBase base;
  124. };
  125.  
  126. typedef struct TimeRecord TimeRecord;
  127.  
  128. struct SampleDescription {
  129.  long descSize;
  130.  long dataFormat;
  131.  long resvd1;
  132.  short resvd2;
  133.  short dataRefIndex;
  134. };
  135.  
  136. typedef struct SampleDescription SampleDescription;
  137. typedef SampleDescription *SampleDescriptionPtr, **SampleDescriptionHandle;
  138.  
  139. struct SoundDescription {
  140.  long descSize;
  141.  long dataFormat;
  142.  long resvd1;
  143.  short resvd2;
  144.  short dataRefIndex;
  145.  short version;
  146.  short revlevel;
  147.  long vendor;
  148.  short numChannels;
  149.  short sampleSize;
  150.  short compressionID;
  151.  short packetSize;
  152.  Fixed sampleRate;
  153. };
  154.  
  155. typedef struct SoundDescription SoundDescription;
  156. typedef SoundDescription *SoundDescriptionPtr, **SoundDescriptionHandle;
  157.  
  158.  
  159. enum {movieProgressOpen = 0,movieProgressUpdatePercent = 1,movieProgressClose = 2};
  160. typedef unsigned char movieProgressMessages;
  161.  
  162. enum {progressOpFlatten = 1,progressOpInsertTrackSegment = 2,progressOpInsertMovieSegment = 3,
  163.  progressOpPaste = 4,progressOpAddMovieSelection = 5,progressOpCopy = 6,
  164.  progressOpCut = 7,progressOpLoadMovieIntoRam = 8,progressOpLoadTrackIntoRam = 9,
  165.     progressOpLoadMediaIntoRam = 10};
  166. typedef unsigned char movieProgressOperations;
  167.  
  168. enum {mediaQualityDraft = 0x0000, mediaQualityNormal = 0x0040, mediaQualityBetter = 0x0080,
  169.     mediaQualityBest = 0x00C0};
  170.  
  171.  
  172. typedef pascal OSErr  (*MovieProgressProcPtr) (Movie m, short message, short whatOperation,
  173.            Fixed percentDone, long refCon);        
  174.  
  175. typedef pascal OSErr (*MovieRgnCoverProc)(Movie m, RgnHandle changedRgn, long refcon);  
  176.  
  177. typedef Handle MediaInformationHandle;
  178. typedef ComponentInstance MediaHandler;
  179. typedef Component MediaHandlerComponent;
  180. typedef ComponentInstance DataHandler;
  181. typedef Component DataHandlerComponent;
  182. typedef ComponentResult HandlerError;
  183. typedef ComponentInstance MovieController;
  184.  
  185. typedef pascal void (*ErrorProcPtr)(OSErr theErr, long refcon);        
  186.  
  187. typedef pascal Boolean (*MoviePreviewCallOutProc)(long refcon);        
  188.  
  189.  
  190. enum {newMovieActive = 1<<0,newMovieDontResolveDataRefs = 1<<1,newMovieDontAskUnresolvedDataRefs = 1<<2};
  191. typedef unsigned char newMovieFlagsEnum;
  192.  
  193. enum {trackUsageInMovie = 1<<1,trackUsageInPreview = 1<<2,trackUsageInPoster = 1<<3};
  194. typedef unsigned char trackUsageEnum;
  195.  
  196. enum {mediaSampleNotSync = 1};
  197. typedef unsigned char mediaSampleFlagsEnum;
  198.  
  199. enum {nextTimeMediaSample = 1<<0,nextTimeMediaEdit = 1<<1,nextTimeTrackEdit = 1<<2,
  200.  nextTimeSyncSample = 1<<3,nextTimeEdgeOK = 1<<14,nextTimeIgnoreActiveSegment = 1<<15};
  201. typedef unsigned short nextTimeFlagsEnum;
  202.  
  203. enum {createMovieFileDeleteCurFile = 1L<<31,createMovieFileDontCreateMovie = 1L<<30,
  204.  createMovieFileDontOpenFile = 1L<<29};
  205. typedef unsigned long createMovieFileFlagsEnum;
  206.  
  207. enum {flattenAddMovieToDataFork = 1L<<0,flattenActiveTracksOnly = 1L<<2,
  208.  flattenDontInterleaveFlatten = 1L<<3};
  209. typedef unsigned char movieFlattenFlagsEnum;
  210.  
  211. enum {movieScrapDontZeroScrap = 1<<0,movieScrapOnlyPutMovie = 1<<1};
  212. typedef unsigned char movieScrapFlagsEnum;
  213.  
  214. enum {hintsScrubMode = 1<<0};
  215. typedef unsigned char playHintsEnum;
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222. #ifdef __cplusplus
  223. extern "C" {
  224. #endif
  225. /*  Initialization Routines  */
  226. pascal OSErr EnterMovies(void)
  227.  = {0x303C,0x1,0xAAAA}; 
  228. pascal void ExitMovies(void)
  229.  = {0x303C,0x2,0xAAAA}; 
  230.  
  231. /*  error Routines  */
  232. pascal OSErr GetMoviesError(void)
  233.  = {0x303C,0x3,0xAAAA}; 
  234. pascal void ClearMoviesStickyError(void)
  235.  = {0x303C,0xDE,0xAAAA}; 
  236. pascal OSErr GetMoviesStickyError(void)
  237.  = {0x303C,0x4,0xAAAA}; 
  238.  
  239. pascal void SetMoviesErrorProc(ErrorProcPtr errProc,long refcon)
  240.  = {0x303C,0xEF,0xAAAA}; 
  241.  
  242. pascal ComponentResult GetTrackStatus(Track t)
  243.  = {0x303C,0x172,0xAAAA}; 
  244. pascal ComponentResult GetMovieStatus(Movie m,Track *firstProblemTrack)
  245.  = {0x303C,0x173,0xAAAA}; 
  246.  
  247. /*  Playback Routines  */
  248. pascal void MoviesTask(Movie m,long maxMilliSecToUse)
  249.  = {0x303C,0x5,0xAAAA}; 
  250.  
  251. pascal void StartMovie(Movie m)
  252.  = {0x303C,0xB,0xAAAA}; 
  253. pascal void StopMovie(Movie m)
  254.  = {0x303C,0xC,0xAAAA}; 
  255. pascal void GoToBeginningOfMovie(Movie m)
  256.  = {0x303C,0xD,0xAAAA}; 
  257. pascal void GoToEndOfMovie(Movie m)
  258.  = {0x303C,0xE,0xAAAA}; 
  259. pascal Boolean IsMovieDone(Movie m)
  260.  = {0x303C,0xDD,0xAAAA}; 
  261.  
  262. pascal Boolean GetMoviePreviewMode(Movie m)
  263.  = {0x303C,0xF,0xAAAA}; 
  264. pascal void SetMoviePreviewMode(Movie m,Boolean usePreview)
  265.  = {0x303C,0x10,0xAAAA}; 
  266. pascal void ShowMoviePoster(Movie m)
  267.  = {0x303C,0x11,0xAAAA}; 
  268.  
  269. pascal void GetMovieGWorld(Movie m,CGrafPtr *port,GDHandle *gdh)
  270.  = {0x303C,0x15,0xAAAA}; 
  271. pascal void SetMovieGWorld(Movie m,CGrafPtr port,GDHandle gdh)
  272.  = {0x303C,0x16,0xAAAA}; 
  273.  
  274. pascal OSErr PrerollMovie(Movie m,TimeValue time,Fixed Rate)
  275.  = {0x303C,0x6,0xAAAA}; 
  276. pascal OSErr LoadMovieIntoRam(Movie m,TimeValue time,TimeValue duration,
  277.  long flags)
  278.  = {0x303C,0x7,0xAAAA}; 
  279. pascal OSErr LoadTrackIntoRam(Track t,TimeValue time,TimeValue duration,
  280.  long flags)
  281.  = {0x303C,0x16E,0xAAAA}; 
  282. pascal OSErr LoadMediaIntoRam(Media m,TimeValue time,TimeValue duration,
  283.  long flags)
  284.  = {0x303C,0x8,0xAAAA}; 
  285.  
  286. pascal void SetMovieActive(Movie m,Boolean active)
  287.  = {0x303C,0x9,0xAAAA}; 
  288. pascal Boolean GetMovieActive(Movie m)
  289.  = {0x303C,0xA,0xAAAA}; 
  290.  
  291. pascal void PlayMoviePreview(Movie m,MoviePreviewCallOutProc callOutProc,
  292.  long refcon)
  293.  = {0x303C,0xF2,0xAAAA}; 
  294.  
  295. /*  Movie PICT Routines  */
  296. pascal PicHandle GetMoviePict(Movie m,TimeValue time)
  297.  = {0x303C,0x1D,0xAAAA}; 
  298. pascal PicHandle GetTrackPict(Track t,TimeValue time)
  299.  = {0x303C,0x1E,0xAAAA}; 
  300.  
  301. pascal PicHandle GetMoviePosterPict(Movie m)
  302.  = {0x303C,0xF7,0xAAAA}; 
  303.  
  304. /*  movie TimeBase Routines  */
  305. pascal TimeBase GetMovieTimeBase(Movie m)
  306.  = {0x303C,0x12,0xAAAA}; 
  307.  
  308. pascal void SetMovieMasterTimeBase(Movie m,TimeBase tb,const TimeRecord *slaveZero)
  309.  = {0x303C,0x167,0xAAAA}; 
  310. pascal void SetMovieMasterClock(Movie m,Component clockMeister,const TimeRecord *slaveZero)
  311.  = {0x303C,0x168,0xAAAA}; 
  312.  
  313. /*  spatial movie Routines  */
  314. pascal void GetMovieBox(Movie m,Rect *boxRect)
  315.  = {0x303C,0xF9,0xAAAA}; 
  316. pascal void SetMovieBox(Movie m,const Rect *boxRect)
  317.  = {0x303C,0xFA,0xAAAA}; 
  318.  
  319. /*  movie display clip  */
  320. pascal RgnHandle GetMovieDisplayClipRgn(Movie m)
  321.  = {0x303C,0xFC,0xAAAA}; 
  322. pascal void SetMovieDisplayClipRgn(Movie m,RgnHandle theClip)
  323.  = {0x303C,0xFD,0xAAAA}; 
  324.  
  325. /*  movie clip  */
  326. pascal RgnHandle GetMovieClipRgn(Movie m)
  327.  = {0x303C,0x100,0xAAAA}; 
  328. pascal void SetMovieClipRgn(Movie m,RgnHandle theClip)
  329.  = {0x303C,0x101,0xAAAA}; 
  330.  
  331. /*  track clip  */
  332. pascal RgnHandle GetTrackClipRgn(Track t)
  333.  = {0x303C,0x102,0xAAAA}; 
  334. pascal void SetTrackClipRgn(Track t,RgnHandle theClip)
  335.  = {0x303C,0x103,0xAAAA}; 
  336.  
  337. /*  bounds in display space  */
  338. pascal RgnHandle GetMovieDisplayBoundsRgn(Movie m)
  339.  = {0x303C,0xFB,0xAAAA}; 
  340. pascal RgnHandle GetTrackDisplayBoundsRgn(Track t)
  341.  = {0x303C,0x112,0xAAAA}; 
  342.  
  343. /*  bounds in movie space  */
  344. pascal RgnHandle GetMovieBoundsRgn(Movie m)
  345.  = {0x303C,0xFE,0xAAAA}; 
  346. pascal RgnHandle GetTrackMovieBoundsRgn(Track t)
  347.  = {0x303C,0xFF,0xAAAA}; 
  348.  
  349. /*  bounds in track space  */
  350. pascal RgnHandle GetTrackBoundsRgn(Track t)
  351.  = {0x303C,0x111,0xAAAA}; 
  352.  
  353. /*  movie poster box  */
  354. pascal void GetPosterBox(Movie m,Rect *boxRect)
  355.  = {0x303C,0x16F,0xAAAA}; 
  356. pascal void SetPosterBox(Movie m,const Rect *boxRect)
  357.  = {0x303C,0x170,0xAAAA}; 
  358.  
  359. /*  movie/track bounds over a range of time  */
  360. pascal RgnHandle GetMovieSegmentDisplayBoundsRgn(Movie m,TimeValue time,
  361.  TimeValue duration)
  362.  = {0x303C,0x16C,0xAAAA}; 
  363. pascal RgnHandle GetTrackSegmentDisplayBoundsRgn(Track t,TimeValue time,
  364.  TimeValue duration)
  365.  = {0x303C,0x16B,0xAAAA}; 
  366.  
  367. pascal void SetMovieCoverProcs(Movie m,MovieRgnCoverProc uncoverProc,MovieRgnCoverProc coverProc,
  368.  long refCon)
  369.  = {0x303C,0x179,0xAAAA}; 
  370.  
  371. /*  mattes - always in track space  */
  372. pascal PixMapHandle GetTrackMatte(Track t)
  373.  = {0x303C,0x115,0xAAAA}; 
  374. pascal void SetTrackMatte(Track t,PixMapHandle theMatte)
  375.  = {0x303C,0x116,0xAAAA}; 
  376. pascal void DisposeMatte(PixMapHandle theMatte)
  377.  = {0x303C,0x14A,0xAAAA}; 
  378.  
  379. /*  movie creation Routines  */
  380. pascal OSErr NewMovieFromHandle(Movie *m,Handle h,short newMovieFlags,Boolean *dataRefWasChanged)
  381.  = {0x303C,0xF1,0xAAAA}; 
  382. pascal OSErr PutMovieIntoHandle(Movie m,Handle h)
  383.  = {0x303C,0x22,0xAAAA}; 
  384.  
  385. pascal Movie NewMovie(long newMovieFlags)
  386.  = {0x303C,0x187,0xAAAA}; 
  387. pascal void DisposeMovie(Movie m)
  388.  = {0x303C,0x23,0xAAAA}; 
  389.  
  390. /*  Movie Routines  */
  391. pascal unsigned long GetMovieCreationTime(Movie m)
  392.  = {0x303C,0x26,0xAAAA}; 
  393. pascal unsigned long GetMovieModificationTime(Movie m)
  394.  = {0x303C,0x27,0xAAAA}; 
  395.  
  396. pascal TimeScale GetMovieTimeScale(Movie m)
  397.  = {0x303C,0x29,0xAAAA}; 
  398. pascal void SetMovieTimeScale(Movie m,TimeScale timeScale)
  399.  = {0x303C,0x2A,0xAAAA}; 
  400.  
  401. pascal TimeValue GetMovieDuration(Movie m)
  402.  = {0x303C,0x2B,0xAAAA}; 
  403.  
  404. pascal Fixed GetMovieRate(Movie m)
  405.  = {0x303C,0x2C,0xAAAA}; 
  406. pascal void SetMovieRate(Movie m,Fixed rate)
  407.  = {0x303C,0x2D,0xAAAA}; 
  408.  
  409. pascal Fixed GetMoviePreferredRate(Movie m)
  410.  = {0x303C,0xF3,0xAAAA}; 
  411. pascal void SetMoviePreferredRate(Movie m,Fixed rate)
  412.  = {0x303C,0xF4,0xAAAA}; 
  413.  
  414. pascal short GetMoviePreferredVolume(Movie m)
  415.  = {0x303C,0xF5,0xAAAA}; 
  416. pascal void SetMoviePreferredVolume(Movie m,short volume)
  417.  = {0x303C,0xF6,0xAAAA}; 
  418.  
  419. pascal short GetMovieVolume(Movie m)
  420.  = {0x303C,0x2E,0xAAAA}; 
  421. pascal void SetMovieVolume(Movie m,short volume)
  422.  = {0x303C,0x2F,0xAAAA}; 
  423.  
  424. pascal void GetMovieMatrix(Movie m,MatrixRecord *matrix)
  425.  = {0x303C,0x31,0xAAAA}; 
  426. pascal void SetMovieMatrix(Movie m,const MatrixRecord *matrix)
  427.  = {0x303C,0x32,0xAAAA}; 
  428.  
  429. pascal void GetMoviePreviewTime(Movie m,TimeValue *previewTime,TimeValue *previewDuration)
  430.  = {0x303C,0x33,0xAAAA}; 
  431. pascal void SetMoviePreviewTime(Movie m,TimeValue previewTime,TimeValue previewDuration)
  432.  = {0x303C,0x34,0xAAAA}; 
  433.  
  434. pascal TimeValue GetMoviePosterTime(Movie m)
  435.  = {0x303C,0x35,0xAAAA}; 
  436. pascal void SetMoviePosterTime(Movie m,TimeValue posterTime)
  437.  = {0x303C,0x36,0xAAAA}; 
  438.  
  439. pascal void GetMovieSelection(Movie m,TimeValue *selectionTime,TimeValue *selectionDuration)
  440.  = {0x303C,0x37,0xAAAA}; 
  441. pascal void SetMovieSelection(Movie m,TimeValue selectionTime,TimeValue selectionDuration)
  442.  = {0x303C,0x38,0xAAAA}; 
  443.  
  444. pascal void SetMovieActiveSegment(Movie m,TimeValue startTime,TimeValue duration)
  445.  = {0x303C,0x15C,0xAAAA}; 
  446. pascal void GetMovieActiveSegment(Movie m,TimeValue *startTime,TimeValue *duration)
  447.  = {0x303C,0x15D,0xAAAA}; 
  448.  
  449. pascal TimeValue GetMovieTime(Movie m,TimeRecord *currentTime)
  450.  = {0x303C,0x39,0xAAAA}; 
  451. pascal void SetMovieTime(Movie m,const TimeRecord *newtime)
  452.  = {0x303C,0x3C,0xAAAA}; 
  453. pascal void SetMovieTimeValue(Movie m,TimeValue newtime)
  454.  = {0x303C,0x3D,0xAAAA}; 
  455.  
  456. pascal UserData GetMovieUserData(Movie m)
  457.  = {0x303C,0x3E,0xAAAA}; 
  458.  
  459. pascal void SetMoviePlayHints(Movie movie,long flags,long flagsMask)
  460.  = {0x303C,0x1A1,0xAAAA};
  461.  
  462. /*  Movie/Track/Media finding Routines  */
  463. pascal long GetMovieTrackCount(Movie m)
  464.  = {0x303C,0x3F,0xAAAA}; 
  465. pascal Track GetMovieTrack(Movie m,long trackID)
  466.  = {0x303C,0x40,0xAAAA}; 
  467.  
  468. pascal Track GetMovieIndTrack(Movie m,long index)
  469.  = {0x303C,0x117,0xAAAA}; 
  470.  
  471. pascal long GetTrackID(Track t)
  472.  = {0x303C,0x127,0xAAAA}; 
  473.  
  474. pascal Movie GetTrackMovie(Track t)
  475.  = {0x303C,0xD0,0xAAAA}; 
  476.  
  477. pascal Media GetTrackMedia(Track t)
  478.  = {0x303C,0x62,0xAAAA}; 
  479. pascal Track GetMediaTrack(Media m)
  480.  = {0x303C,0xC5,0xAAAA}; 
  481.  
  482. /*  Track creation Routines  */
  483. pascal Track NewMovieTrack(Movie m,Fixed width,Fixed height,short trackVolume)
  484.  = {0x303C,0x188,0xAAAA}; 
  485. pascal void DisposeMovieTrack(Track t)
  486.  = {0x303C,0x42,0xAAAA}; 
  487.  
  488. /*  Track Routines  */
  489. pascal unsigned long GetTrackCreationTime(Track t)
  490.  = {0x303C,0x43,0xAAAA}; 
  491. pascal unsigned long GetTrackModificationTime(Track t)
  492.  = {0x303C,0x44,0xAAAA}; 
  493.  
  494. pascal Boolean GetTrackEnabled(Track t)
  495.  = {0x303C,0x45,0xAAAA}; 
  496. pascal void SetTrackEnabled(Track t,Boolean isEnabled)
  497.  = {0x303C,0x46,0xAAAA}; 
  498.  
  499. pascal long GetTrackUsage(Track t)
  500.  = {0x303C,0x47,0xAAAA}; 
  501. pascal void SetTrackUsage(Track t,long usage)
  502.  = {0x303C,0x48,0xAAAA}; 
  503.  
  504. pascal TimeValue GetTrackDuration(Track t)
  505.  = {0x303C,0x4B,0xAAAA}; 
  506.  
  507. pascal TimeValue GetTrackOffset(Track t)
  508.  = {0x303C,0x4C,0xAAAA}; 
  509. pascal void SetTrackOffset(Track t,TimeValue offset)
  510.  = {0x303C,0x4D,0xAAAA}; 
  511.  
  512. pascal short GetTrackLayer(Track t)
  513.  = {0x303C,0x50,0xAAAA}; 
  514. pascal void SetTrackLayer(Track t,short layer)
  515.  = {0x303C,0x51,0xAAAA}; 
  516.  
  517. pascal Track GetTrackAlternate(Track t)
  518.  = {0x303C,0x52,0xAAAA}; 
  519. pascal void SetTrackAlternate(Track t,Track alternateT)
  520.  = {0x303C,0x53,0xAAAA}; 
  521.  
  522. pascal short GetTrackVolume(Track t)
  523.  = {0x303C,0x54,0xAAAA}; 
  524. pascal void SetTrackVolume(Track t,short volume)
  525.  = {0x303C,0x55,0xAAAA}; 
  526.  
  527. pascal void GetTrackMatrix(Track t,MatrixRecord *matrix)
  528.  = {0x303C,0x56,0xAAAA}; 
  529. pascal void SetTrackMatrix(Track t,const MatrixRecord *matrix)
  530.  = {0x303C,0x57,0xAAAA}; 
  531.  
  532. pascal void GetTrackDimensions(Track t,Fixed *width,Fixed *height)
  533.  = {0x303C,0x5D,0xAAAA}; 
  534. pascal void SetTrackDimensions(Track t,Fixed width,Fixed height)
  535.  = {0x303C,0x5E,0xAAAA}; 
  536.  
  537. pascal UserData GetTrackUserData(Track t)
  538.  = {0x303C,0x5F,0xAAAA}; 
  539.  
  540. /*  Media creation Routines  */
  541. pascal Media NewTrackMedia(Track t,OSType mediaType,TimeScale timeScale,
  542.  Handle dataRef,OSType dataRefType)
  543.  = {0x303C,0x18E,0xAAAA}; 
  544. pascal void DisposeTrackMedia(Media m)
  545.  = {0x303C,0x61,0xAAAA}; 
  546.  
  547. /*  Media Routines  */
  548. pascal unsigned long GetMediaCreationTime(Media m)
  549.  = {0x303C,0x66,0xAAAA}; 
  550. pascal unsigned long GetMediaModificationTime(Media m)
  551.  = {0x303C,0x67,0xAAAA}; 
  552.  
  553. pascal TimeScale GetMediaTimeScale(Media m)
  554.  = {0x303C,0x68,0xAAAA}; 
  555. pascal void SetMediaTimeScale(Media m,TimeScale timeScale)
  556.  = {0x303C,0x69,0xAAAA}; 
  557.  
  558. pascal TimeValue GetMediaDuration(Media m)
  559.  = {0x303C,0x6A,0xAAAA}; 
  560.  
  561. pascal short GetMediaLanguage(Media m)
  562.  = {0x303C,0x6B,0xAAAA}; 
  563. pascal void SetMediaLanguage(Media m,short language)
  564.  = {0x303C,0x6C,0xAAAA}; 
  565.  
  566. pascal short GetMediaQuality(Media m)
  567.  = {0x303C,0x6D,0xAAAA}; 
  568. pascal void SetMediaQuality(Media m,short quality)
  569.  = {0x303C,0x6E,0xAAAA}; 
  570.  
  571. pascal UserData GetMediaUserData(Media m)
  572.  = {0x303C,0x70,0xAAAA}; 
  573.  
  574. pascal void SetMediaPlayHints(Movie movie,long flags,long flagsMask)
  575.  = {0x303C,0x1A2,0xAAAA};
  576.  
  577. /*  Media Handler Routines  */
  578. pascal MediaHandler GetMediaHandler(Media m)
  579.  = {0x303C,0x71,0xAAAA}; 
  580. pascal OSErr SetMediaHandler(Media m,MediaHandlerComponent mH)
  581.  = {0x303C,0x190,0xAAAA}; 
  582.  
  583. pascal void GetMediaHandlerDescription(Media m,OSType *mediaType, Str255 creatorName,
  584.  OSType *creatorManufacturer)
  585.  = {0x303C,0x6F,0xAAAA}; 
  586.  
  587. #ifdef __cplusplus
  588. }
  589. #endif
  590. enum {dataRefSelfReference = 1<<0,dataRefWasNotResolved = 1<<1};
  591. typedef unsigned char dataRefAttributesFlags;
  592.  
  593.  
  594. #ifdef __cplusplus
  595. extern "C" {
  596. #endif
  597. /*  Media dataRef Routines  */
  598. pascal OSErr GetMediaDataRef(Media m,short index,Handle *dataRef,OSType *dataRefType,
  599.  long *dataRefAttributes)
  600.  = {0x303C,0x197,0xAAAA}; 
  601. pascal OSErr AddMediaDataRef(Media m,short *index,Handle dataRef,OSType dataRefType)
  602.  = {0x303C,0x198,0xAAAA}; 
  603.  
  604. pascal OSErr GetMediaDataRefCount(Media m,short *count)
  605.  = {0x303C,0x199,0xAAAA}; 
  606.  
  607. /*  Media data handler Routines  */
  608. pascal DataHandler GetMediaDataHandler(Media m,short index)
  609.  = {0x303C,0x19F,0xAAAA}; 
  610. pascal OSErr SetMediaDataHandler(Media m,short index,DataHandlerComponent dataHandler)
  611.  = {0x303C,0x1A0,0xAAAA}; 
  612.  
  613. pascal void GetMediaDataHandlerDescription(Media m,short index,OSType *dhType,
  614.  Str255 creatorName,OSType *creatorManufacturer)
  615.  = {0x303C,0x19E,0xAAAA}; 
  616.  
  617. /*  Media sample Routines  */
  618. pascal long GetMediaSampleDescriptionCount(Media m)
  619.  = {0x303C,0x77,0xAAAA}; 
  620. pascal void GetMediaSampleDescription(Media m,long index,SampleDescriptionHandle descH)
  621.  = {0x303C,0x78,0xAAAA}; 
  622. pascal long GetMediaSampleCount(Media m)
  623.  = {0x303C,0x79,0xAAAA}; 
  624. pascal void SampleNumToMediaTime(Media m,long logicalSampleNum,TimeValue *sampleTime,
  625.  TimeValue *sampleDuration)
  626.  = {0x303C,0x7A,0xAAAA}; 
  627. pascal void MediaTimeToSampleNum(Media m,TimeValue time,long *sampleNum,
  628.  TimeValue *sampleTime,TimeValue *sampleDuration)
  629.  = {0x303C,0x7B,0xAAAA}; 
  630.  
  631. pascal OSErr AddMediaSample(Media m,Handle dataIn,long inOffset,unsigned long size,
  632.  TimeValue durationPerSample,SampleDescriptionHandle sampleDescriptionH,
  633.  long numberOfSamples,short sampleFlags,TimeValue *sampleTime)
  634.  = {0x303C,0x7C,0xAAAA}; 
  635. pascal OSErr AddMediaSampleReference(Media m,long dataOffset,unsigned long size,
  636.  TimeValue durationPerSample,SampleDescriptionHandle sampleDescriptionH,
  637.  long numberOfSamples,short sampleFlags,TimeValue *sampleTime)
  638.  = {0x303C,0x7D,0xAAAA}; 
  639. pascal OSErr GetMediaSample(Media m,Handle dataOut,long maxSizeToGrow,long *size,
  640.  TimeValue time,TimeValue *sampleTime,TimeValue *durationPerSample,SampleDescriptionHandle sampleDescriptionH,
  641.  long *sampleDescriptionIndex,long maxNumberOfSamples,long *numberOfSamples,
  642.  short *sampleFlags)
  643.  = {0x303C,0x7E,0xAAAA}; 
  644. pascal OSErr GetMediaSampleReference(Media m,long *dataOffset,long *size,
  645.  TimeValue time,TimeValue *sampleTime,TimeValue *durationPerSample,SampleDescriptionHandle sampleDescriptionH,
  646.  long *sampleDescriptionIndex,long maxNumberOfSamples,long *numberOfSamples,
  647.  short *sampleFlags)
  648.  = {0x303C,0x7F,0xAAAA}; 
  649.  
  650. /*  High level editing Routines  */
  651. pascal Movie CutMovieSelection(Movie m)
  652.  = {0x303C,0x8D,0xAAAA}; 
  653. pascal Movie CopyMovieSelection(Movie m)
  654.  = {0x303C,0x8E,0xAAAA}; 
  655. pascal void PasteMovieSelection(Movie m,Movie src)
  656.  = {0x303C,0x8F,0xAAAA}; 
  657. pascal void AddMovieSelection(Movie m,Movie src)
  658.  = {0x303C,0x152,0xAAAA}; 
  659. pascal void ClearMovieSelection(Movie m)
  660.  = {0x303C,0xE1,0xAAAA}; 
  661.  
  662. /*  Middle-level Editing Routines  */
  663. pascal OSErr InsertTrackSegment(Track srcTrack,Track dstTrack,TimeValue srcIn,
  664.  TimeValue srcDuration,TimeValue dstIn)
  665.  = {0x303C,0x85,0xAAAA}; 
  666. pascal OSErr InsertMovieSegment(Movie srcMovie,Movie dstMovie,TimeValue srcIn,
  667.  TimeValue srcDuration,TimeValue dstIn)
  668.  = {0x303C,0x86,0xAAAA}; 
  669. pascal OSErr InsertEmptyTrackSegment(Track dstTrack,TimeValue dstIn,TimeValue dstDuration)
  670.  = {0x303C,0x87,0xAAAA}; 
  671. pascal OSErr InsertEmptyMovieSegment(Movie dstMovie,TimeValue dstIn,TimeValue dstDuration)
  672.  = {0x303C,0x88,0xAAAA}; 
  673. pascal OSErr DeleteTrackSegment(Track t,TimeValue dstIn,TimeValue duration)
  674.  = {0x303C,0x89,0xAAAA}; 
  675. pascal OSErr DeleteMovieSegment(Movie m,TimeValue dstIn,TimeValue duration)
  676.  = {0x303C,0x8A,0xAAAA}; 
  677. pascal OSErr ScaleTrackSegment(Track t,TimeValue dstIn,TimeValue oldDuration,
  678.  TimeValue newDuration)
  679.  = {0x303C,0x8B,0xAAAA}; 
  680. pascal OSErr ScaleMovieSegment(Movie m,TimeValue dstIn,TimeValue oldDuration,
  681.  TimeValue newDuration)
  682.  = {0x303C,0x8C,0xAAAA}; 
  683.  
  684. pascal OSErr CopyTrackSettings(Track srcTrack,Track dstTrack)
  685.  = {0x303C,0x153,0xAAAA}; 
  686. pascal OSErr CopyMovieSettings(Movie srcMovie,Movie dstMovie)
  687.  = {0x303C,0x154,0xAAAA}; 
  688.  
  689. /*  low-level Editing Routines  */
  690. pascal OSErr InsertMediaIntoTrack(Track t,TimeValue trackStart,TimeValue mediaTime,
  691.  TimeValue mediaDuration,Fixed mediaRate)
  692.  = {0x303C,0x183,0xAAAA}; 
  693.  
  694. pascal OSErr BeginMediaEdits(Media m)
  695.  = {0x303C,0x72,0xAAAA}; 
  696. pascal OSErr EndMediaEdits(Media m)
  697.  = {0x303C,0x73,0xAAAA}; 
  698.  
  699. /*  movie & track edit state Routines  */
  700. pascal MovieEditState NewMovieEditState(Movie m)
  701.  = {0x303C,0x104,0xAAAA}; 
  702. pascal OSErr UseMovieEditState(Movie m,MovieEditState toState)
  703.  = {0x303C,0x105,0xAAAA}; 
  704. pascal OSErr DisposeMovieEditState(MovieEditState state)
  705.  = {0x303C,0x106,0xAAAA}; 
  706.  
  707. pascal TrackEditState NewTrackEditState(Track t)
  708.  = {0x303C,0x107,0xAAAA}; 
  709. pascal OSErr UseTrackEditState(Track t,TrackEditState state)
  710.  = {0x303C,0x108,0xAAAA}; 
  711. pascal OSErr DisposeTrackEditState(TrackEditState state)
  712.  = {0x303C,0x109,0xAAAA}; 
  713.  
  714. /*  Miscellaneous Routines  */
  715. pascal TimeValue TrackTimeToMediaTime(TimeValue value,Track t)
  716.  = {0x303C,0x96,0xAAAA}; 
  717.  
  718. pascal long GetMovieDataSize(Movie m,TimeValue startTime,TimeValue duration)
  719.  = {0x303C,0x98,0xAAAA}; 
  720. pascal long GetTrackDataSize(Track t,TimeValue startTime,TimeValue duration)
  721.  = {0x303C,0x149,0xAAAA}; 
  722. pascal long GetMediaDataSize(Media m,TimeValue startTime,TimeValue duration)
  723.  = {0x303C,0x99,0xAAAA}; 
  724.  
  725. pascal Boolean PtInMovie(Movie m,Point pt)
  726.  = {0x303C,0x9A,0xAAAA}; 
  727. pascal Boolean PtInTrack(Track t,Point pt)
  728.  = {0x303C,0x9B,0xAAAA}; 
  729.  
  730. pascal OSErr UpdateMovie(Movie m)
  731.  = {0x303C,0x1F,0xAAAA}; 
  732.  
  733. /*  Alternate Group Selection Routines  */
  734. pascal void SetMovieLanguage(Movie m,long language)
  735.  = {0x303C,0x9C,0xAAAA}; 
  736.  
  737. pascal void SetAutoTrackAlternatesEnabled(Movie m,Boolean enable)
  738.  = {0x303C,0x15E,0xAAAA}; 
  739. pascal void SelectMovieAlternates(Movie m)
  740.  = {0x303C,0x15F,0xAAAA}; 
  741.  
  742. /*  UserData Routines  */
  743. pascal OSErr GetUserData(UserData u,Handle data, OSType udType,long index)
  744.  = {0x303C,0x9E,0xAAAA}; 
  745. pascal OSErr AddUserData(UserData u,Handle data,OSType udType)
  746.  = {0x303C,0x9F,0xAAAA}; 
  747. pascal OSErr RemoveUserData(UserData u,OSType udType,long index)
  748.  = {0x303C,0xA0,0xAAAA}; 
  749. pascal OSType GetNextUserDataType(UserData u, OSType udType)
  750.  = {0x303C,0x1A5,0xAAAA}; 
  751. pascal short CountUserDataType(UserData u,OSType udType)
  752.  = {0x303C,0x14B,0xAAAA}; 
  753. pascal OSErr AddUserDataText(UserData u,Handle data,OSType udType,long index,
  754.  short itlRegionTag)
  755.  = {0x303C,0x14C,0xAAAA}; 
  756. pascal OSErr GetUserDataText(UserData u,Handle data,OSType udType,long index,
  757.  short itlRegionTag)
  758.  = {0x303C,0x14D,0xAAAA}; 
  759. pascal OSErr RemoveUserDataText(UserData u,OSType udType,long index,short itlRegionTag)
  760.  = {0x303C,0x14E,0xAAAA}; 
  761.  
  762. /*  interesting time Routines  */
  763. pascal void GetMediaNextInterestingTime(Media m,short interestingTimeFlags,
  764.  TimeValue time,Fixed rate,TimeValue *interestingTime,TimeValue *interestingDuration)
  765.  = {0x303C,0x16D,0xAAAA}; 
  766. pascal void GetTrackNextInterestingTime(Track t,short interestingTimeFlags,
  767.  TimeValue time,Fixed rate,TimeValue *interestingTime,TimeValue *interestingDuration)
  768.  = {0x303C,0xE2,0xAAAA}; 
  769. pascal void GetMovieNextInterestingTime(Movie m,short interestingTimeFlags,
  770.  short numMediaTypes,const OSType *whichMediaTypes,TimeValue time,Fixed rate,
  771.  TimeValue *interestingTime,TimeValue *interestingDuration)
  772.  = {0x303C,0x10E,0xAAAA}; 
  773.  
  774. /*  movie file Routines  */
  775. pascal OSErr CreateMovieFile(const FSSpec *fileSpec,OSType creator,ScriptCode scriptTag,
  776.  long createMovieFileFlags,short *resRefNum,Movie *newMovie)
  777.  = {0x303C,0x191,0xAAAA}; 
  778. pascal OSErr DeleteMovieFile(const FSSpec *fileSpec)
  779.  = {0x303C,0x175,0xAAAA}; 
  780.  
  781. pascal OSErr OpenMovieFile(const FSSpec *fileSpec,short *resRefNum, char perms)
  782.  = {0x303C,0x192,0xAAAA}; 
  783. pascal OSErr CloseMovieFile(short resRefNum)
  784.  = {0x303C,0xD5,0xAAAA}; 
  785. #ifdef __cplusplus
  786. }
  787. #endif
  788. enum {
  789.  
  790.  movieInDataForkResID = -1            /* magic res ID */
  791.  
  792. };
  793.  
  794. #ifdef __cplusplus
  795. extern "C" {
  796. #endif
  797. pascal OSErr NewMovieFromFile(Movie *m,short resRefNum,short *resId, StringPtr resName,
  798.  short newMovieFlags,Boolean *dataRefWasChanged)
  799.  = {0x303C,0xF0,0xAAAA}; 
  800.  
  801. pascal OSErr AddMovieResource(Movie m,short resRefNum,short *resId,const StringPtr resName)
  802.  = {0x303C,0xD7,0xAAAA}; 
  803. pascal OSErr RemoveMovieResource(short resRefNum,short resId)
  804.  = {0x303C,0x176,0xAAAA}; 
  805. pascal OSErr UpdateMovieResource(Movie m,short resRefNum,short resId,const StringPtr resName)
  806.  = {0x303C,0xD8,0xAAAA}; 
  807.  
  808. pascal Boolean HasMovieChanged(Movie m)
  809.  = {0x303C,0xD9,0xAAAA}; 
  810. pascal void ClearMovieChanged(Movie m)
  811.  = {0x303C,0x113,0xAAAA}; 
  812.  
  813. pascal void FlattenMovie(Movie m,long movieFlattenFlags,const FSSpec *theFile,
  814.  OSType creator,ScriptCode scriptTag,long createMovieFileFlags,short *resId,
  815.  const StringPtr resName)
  816.  = {0x303C,0x19B,0xAAAA}; 
  817. pascal Movie FlattenMovieData(Movie m,long movieFlattenFlags,const FSSpec *theFile,
  818.  OSType creator,ScriptCode scriptTag,long createMovieFileFlags)
  819.  = {0x303C,0x19C,0xAAAA}; 
  820. pascal void SetMovieProgressProc(Movie m,MovieProgressProcPtr p,long refCon)
  821.  = {0x303C,0x19A,0xAAAA}; 
  822.  
  823. pascal OSErr PutMovieOnScrap(Movie m,long movieScrapFlags)
  824.  = {0x303C,0x18C,0xAAAA}; 
  825. pascal Movie NewMovieFromScrap(long newMovieFlags)
  826.  = {0x303C,0x18D,0xAAAA}; 
  827.  
  828. /*  Video Media Routines  */
  829. pascal HandlerError GetVideoMediaGraphicsMode(MediaHandler mh,long *graphicsMode,
  830.  RGBColor *opColor)
  831.  = {0x2F3C,0x8,0x101,0x7000,0xA82A}; 
  832. pascal HandlerError SetVideoMediaGraphicsMode(MediaHandler mh,long graphicsMode,
  833.  const RGBColor *opColor)
  834.  = {0x2F3C,0x8,0x102,0x7000,0xA82A}; 
  835.  
  836. /*  Sound Media Routines  */
  837. pascal HandlerError GetSoundMediaBalance(MediaHandler mh,short *balance)
  838.  = {0x2F3C,0x4,0x101,0x7000,0xA82A}; 
  839. pascal HandlerError SetSoundMediaBalance(MediaHandler mh,short balance)
  840.  = {0x2F3C,0x2,0x102,0x7000,0xA82A}; 
  841.  
  842. #ifdef __cplusplus
  843. }
  844. #endif
  845.  
  846.  
  847. enum {
  848.  
  849.  couldNotResolveDataRef = -2000,
  850.  badImageDescription = -2001,
  851.  badPublicMovieAtom = -2002,
  852.  cantFindHandler = -2003,
  853.  cantOpenHandler = -2004,
  854.  badComponentType = -2005,
  855.  noMediaHandler = -2006,
  856.  noDataHandler = -2007,
  857.  invalidMedia = -2008,
  858.  invalidTrack = -2009,
  859.  invalidMovie = -2010,
  860.  invalidSampleTable = -2011,
  861.  invalidDataRef = -2012,
  862.  invalidHandler = -2013,
  863.  invalidDuration = -2014,
  864.  invalidTime = -2015,
  865.  cantPutPublicMovieAtom = -2016,
  866.  badEditList = -2017,
  867.  mediaTypesDontMatch = -2018,
  868.  progressProcAborted = -2019
  869. };
  870. enum {
  871.  movieToolboxUnitialized = -2020,
  872.  wfFileNotFound = -2021,
  873.  cantCreateSingleForkFile = -2022,
  874.  invalidEditState = -2023,
  875.  nonMatchingEditState = -2024,
  876.  staleEditState = -2025,
  877.  userDataItemNotFound = -2026,
  878.  maxSizeToGrowTooSmall = -2027,
  879.  badTrackIndex = -2028,
  880.  trackIDNotFound = -2029,
  881.  trackNotInMovie = -2030,
  882.  timeNotInTrack = -2031,
  883.  timeNotInMedia = -2032,
  884.  badEditIndex = -2033,
  885.  internalQuickTimeError = -2034,
  886.  cantEnableTrack = -2035,
  887.  invalidRect = -2036,
  888.  invalidSampleNum = -2037,
  889.  invalidChunkNum = -2038,
  890.  invalidSampleDescIndex = -2039
  891. };
  892. enum {
  893.  invalidChunkCache = -2040,
  894.  invalidSampleDescription = -2041,
  895.  dataNotOpenForRead = -2042,
  896.  dataNotOpenForWrite = -2043,
  897.  dataAlreadyOpenForWrite = -2044,
  898.  dataAlreadyClosed = -2045,
  899.  endOfDataReached = -2046,
  900.  dataNoDataRef = -2047,
  901.  noMovieFound = -2048,
  902.  invalidDataRefContainer = -2049,
  903.  badDataRefIndex = -2050,
  904.  noDefaultDataRef = -2051,
  905.  couldNotUseAnExistingSample = -2052,
  906.  featureUnsupported = -2053
  907. };
  908.  
  909. /* TimeBase Routines */
  910. enum {loopTimeBase = 1, palindromeLoopTimeBase = 2};
  911. typedef unsigned char TimeBaseFlags;
  912.  
  913. enum {
  914.  triggerTimeFwd       = 0x0001,      /* when curTime exceeds triggerTime going forward */
  915.  triggerTimeBwd       = 0x0002,      /* when curTime exceeds triggerTime going backwards */
  916.  triggerTimeEither    = 0x0003,      /* when curTime exceeds triggerTime going either direction */
  917.  triggerRateLT        = 0x0004,      /* when rate changes to less than trigger value */
  918.  triggerRateGT        = 0x0008,      /* when rate changes to greater than trigger value */
  919.  triggerRateEqual     = 0x0010,      /* when rate changes to equal trigger value */
  920.  triggerRateLTE       = triggerRateLT | triggerRateEqual,
  921.  triggerRateGTE       = triggerRateGT | triggerRateEqual,
  922.  triggerRateNotEqual  = triggerRateGT | triggerRateEqual | triggerRateLT,
  923.  triggerRateChange    = 0
  924. };
  925. typedef unsigned char QTCallBackFlags;
  926.  
  927. enum {timeBaseBeforeStartTime = 1,timeBaseAfterStopTime = 2};
  928. typedef unsigned char TimeBaseStatus;
  929.  
  930. enum {callBackAtTime = 1,callBackAtRate = 2,callBackAtTimeJump = 3,callBackAtInterrupt = 0x8000};
  931. typedef unsigned short QTCallBackType;
  932.  
  933.  
  934. typedef pascal void (*QTCallBackProc)(QTCallBack cb,long refCon);
  935.  
  936. enum {
  937.  
  938.  qtcbNeedsRateChanges = 1,
  939.  qtcbNeedsTimeChanges = 2
  940. };
  941.  
  942. /* CallBack equates */
  943. struct QTCallBackHeader {
  944.  long callBackFlags;
  945.  long reserved1;
  946.  char qtPrivate[40];
  947. };
  948.  
  949. typedef struct QTCallBackHeader QTCallBackHeader;
  950.  
  951.  
  952. #ifdef __cplusplus
  953. extern "C" {
  954. #endif
  955. /*  TimeBase Routines  */
  956. pascal TimeBase NewTimeBase(void)
  957.  = {0x303C,0xA5,0xAAAA}; 
  958. pascal void DisposeTimeBase(TimeBase tb)
  959.  = {0x303C,0xB6,0xAAAA}; 
  960.  
  961. pascal TimeValue GetTimeBaseTime(TimeBase tb,TimeScale s,TimeRecord *out)
  962.  = {0x303C,0xA6,0xAAAA}; 
  963. pascal void SetTimeBaseTime(TimeBase tb,const TimeRecord *tr)
  964.  = {0x303C,0xA7,0xAAAA}; 
  965. pascal void SetTimeBaseValue(TimeBase tb,TimeValue t,TimeScale s)
  966.  = {0x303C,0xA8,0xAAAA}; 
  967.  
  968. pascal Fixed GetTimeBaseRate(TimeBase tb)
  969.  = {0x303C,0xA9,0xAAAA}; 
  970. pascal void SetTimeBaseRate(TimeBase tb,Fixed r)
  971.  = {0x303C,0xAA,0xAAAA}; 
  972.  
  973. pascal TimeValue GetTimeBaseStartTime(TimeBase tb,TimeScale s,TimeRecord *out)
  974.  = {0x303C,0xAB,0xAAAA}; 
  975. pascal void SetTimeBaseStartTime(TimeBase tb,const TimeRecord *tr)
  976.  = {0x303C,0xAC,0xAAAA}; 
  977. pascal TimeValue GetTimeBaseStopTime(TimeBase tb,TimeScale s,TimeRecord *out)
  978.  = {0x303C,0xAD,0xAAAA}; 
  979. pascal void SetTimeBaseStopTime(TimeBase tb,const TimeRecord *tr)
  980.  = {0x303C,0xAE,0xAAAA}; 
  981.  
  982. pascal long GetTimeBaseFlags(TimeBase tb)
  983.  = {0x303C,0xB1,0xAAAA}; 
  984. pascal void SetTimeBaseFlags(TimeBase tb,long timeBaseFlags)
  985.  = {0x303C,0xB2,0xAAAA}; 
  986.  
  987. pascal void SetTimeBaseMasterTimeBase(TimeBase slave,TimeBase master,const TimeRecord *slaveZero)
  988.  = {0x303C,0xB4,0xAAAA}; 
  989. pascal TimeBase GetTimeBaseMasterTimeBase(TimeBase tb)
  990.  = {0x303C,0xAF,0xAAAA}; 
  991. pascal void SetTimeBaseMasterClock(TimeBase slave,Component clockMeister,
  992.  const TimeRecord *slaveZero)
  993.  = {0x303C,0xB3,0xAAAA}; 
  994. pascal ComponentInstance GetTimeBaseMasterClock(TimeBase tb)
  995.  = {0x303C,0xB0,0xAAAA}; 
  996.  
  997. pascal void ConvertTime(TimeRecord *inout,TimeBase newBase)
  998.  = {0x303C,0xB5,0xAAAA}; 
  999. pascal void ConvertTimeScale(TimeRecord *inout,TimeScale newScale)
  1000.  = {0x303C,0xB7,0xAAAA}; 
  1001. pascal void AddTime(TimeRecord *dst,const TimeRecord *src)
  1002.  = {0x303C,0x10C,0xAAAA}; 
  1003. pascal void SubtractTime(TimeRecord *dst,const TimeRecord *src)
  1004.  = {0x303C,0x10D,0xAAAA}; 
  1005.  
  1006. pascal long GetTimeBaseStatus(TimeBase tb,TimeRecord *unpinnedTime)
  1007.  = {0x303C,0x10B,0xAAAA}; 
  1008.  
  1009. pascal void SetTimeBaseZero(TimeBase tb,TimeRecord *zero)
  1010.  = {0x303C,0x128,0xAAAA}; 
  1011.  
  1012. /*  CallBack Routines  */
  1013. pascal QTCallBack NewCallBack(TimeBase tb,short cbType)
  1014.  = {0x303C,0xEB,0xAAAA}; 
  1015.  
  1016. pascal void DisposeCallBack(QTCallBack qtCall)
  1017.  = {0x303C,0xEC,0xAAAA}; 
  1018.  
  1019. pascal short GetCallBackType(QTCallBack qtCall)
  1020.  = {0x303C,0xED,0xAAAA}; 
  1021. pascal TimeBase GetCallBackTimeBase(QTCallBack qtCall)
  1022.  = {0x303C,0xEE,0xAAAA}; 
  1023.  
  1024. pascal OSErr CallMeWhen(QTCallBack qtCall,QTCallBackProc callBackProc,long refCon,
  1025.  long param1,long param2,long param3)
  1026.  = {0x303C,0xB8,0xAAAA}; 
  1027.  
  1028. pascal void CancelCallBack(QTCallBack cb)
  1029.  = {0x303C,0xB9,0xAAAA}; 
  1030.  
  1031. /*  Clock CallBack support Routines  */
  1032. pascal OSErr AddCallBackToTimeBase(QTCallBack cb)
  1033.  = {0x303C,0x129,0xAAAA}; 
  1034. pascal OSErr RemoveCallBackFromTimeBase(QTCallBack cb)
  1035.  = {0x303C,0x12A,0xAAAA}; 
  1036. pascal QTCallBack GetFirstCallBack(TimeBase tb)
  1037.  = {0x303C,0x12B,0xAAAA}; 
  1038. pascal QTCallBack GetNextCallBack(QTCallBack cb)
  1039.  = {0x303C,0x12C,0xAAAA}; 
  1040. pascal void ExecuteCallBack(QTCallBack cb)
  1041.  = {0x303C,0x12D,0xAAAA}; 
  1042. #ifdef __cplusplus
  1043. }
  1044. #endif
  1045.  
  1046.  
  1047.  
  1048. /* Movie Controller Routines */
  1049.  
  1050. #define MovieControllerComponentType 'play'
  1051.  
  1052. enum {
  1053.     mcActionIdle = 1,                        // no param
  1054.     mcActionDraw = 2,                        // param is WindowPtr
  1055.     mcActionActivate = 3,                    // no param
  1056.     mcActionDeactivate = 4,                    // no param
  1057.     mcActionMouseDown = 5,                    // param is pointer to EventRecord
  1058.     mcActionKey = 6,                        // param is pointer to EventRecord
  1059.     mcActionPlay = 8,                        // param is Fixed, play rate
  1060.     mcActionGoToTime = 12,                    // param is TimeRecord
  1061.     mcActionSetVolume = 14,                    // param is a short
  1062.     mcActionGetVolume = 15,                    // param is pointer to a short
  1063.     mcActionStep = 18,                        // param is number of steps (short)
  1064.     mcActionSetLooping = 21,                // param is Boolean
  1065.     mcActionGetLooping = 22,                // param is pointer to a Boolean
  1066.     mcActionSetLoopIsPalindrome = 23,        // param is Boolean
  1067.     mcActionGetLoopIsPalindrome = 24,        // param is pointer to a Boolean
  1068.     mcActionSetGrowBoxBounds = 25,            // param is a Rect
  1069.     mcActionControllerSizeChanged = 26,        // no param
  1070.     mcActionSetSelectionBegin = 29,            // param is TimeRecord
  1071.     mcActionSetSelectionDuration = 30,        // param is TimeRecord, action only taken on set-duration
  1072.     mcActionSetPosterTime = 31,                // param is TimeRecord
  1073.     mcActionSetKeysEnabled = 32,            // param is Boolean
  1074.     mcActionGetKeysEnabled = 33,            // param is pointer to Boolean
  1075.     mcActionSetPlaySelection = 34,            // param is Boolean
  1076.     mcActionGetPlaySelection = 35,            // param is pointer to Boolean
  1077.     mcActionSetUseBadge = 36,                // param is Boolean
  1078.     mcActionGetUseBadge = 37,                // param is pointer to Boolean
  1079.     mcActionSetFlags = 38,                    // param is long of flags
  1080.     mcActionGetFlags = 39,                    // param is pointer to a long of flags
  1081.     mcActionSetPlayEveryFrame = 40,            // param is Boolean
  1082.     mcActionGetPlayEveryFrame = 41,            // param is pointer to Boolean
  1083.     mcActionGetPlayRate = 42,                // param is pointer to Fixed
  1084.     mcActionShowBalloon = 43,                // param is a pointer to a boolean. set to false to stop balloon
  1085.     mcActionBadgeClick = 44                    // no param
  1086. };
  1087. typedef unsigned short mcAction;
  1088.  
  1089. enum {mcFlagSuppressMovieFrame = 1<<0,mcFlagSuppressStepButtons = 1<<1,
  1090.  mcFlagSuppressSpeakerButton = 1<<2,mcFlagsUseWindowPalette = 1<<3};
  1091.  
  1092.  
  1093. typedef pascal Boolean (*MCActionFilter)(MovieController mc,short *action,long param);
  1094.  
  1095. enum {mcTopLeftMovie = 1<<0,mcScaleMovieToFit = 1<<1,mcWithBadge = 1<<2,
  1096.  mcNotVisible = 1<<3,mcWithFrame = 1<<4};
  1097. typedef unsigned char mcCreationFlagsEnum;
  1098.  
  1099. enum {mcInfoUndoAvailable = 1<<0,mcInfoCutAvailable = 1<<1,mcInfoCopyAvailable = 1<<2,
  1100.  mcInfoPasteAvailable = 1<<3,mcInfoClearAvailable = 1<<4,mcInfoHasSound = 1<<5,
  1101.  mcInfoIsPlaying = 1<<6,mcInfoIsLooping = 1<<7,mcInfoIsInPalindrome = 1<<8,
  1102.  mcInfoEditingEnabled = 1<<9};
  1103. typedef unsigned short mcInfoFlagsEnum;
  1104.  
  1105.  
  1106. #ifdef __cplusplus
  1107. extern "C" {
  1108. #endif
  1109. /*  target management  */
  1110. pascal MovieController NewMovieController(Movie m,const Rect *movieRect,
  1111.  long controllerCreationFlags)
  1112.  = {0x303C,0x18A,0xAAAA}; 
  1113. pascal void DisposeMovieController(MovieController mc)
  1114.  = {0x303C,0x18B,0xAAAA}; 
  1115.  
  1116. pascal ComponentResult MCSetMovie(MovieController mc,Movie m,WindowPtr movieWindow,
  1117.  Point where)
  1118.  = {0x2F3C,0xC,0x2,0x7000,0xA82A}; 
  1119. pascal Movie MCGetMovie(MovieController mc)
  1120.  = {0x4267,0x2F3C,0x2,0x5,0x7000,0xA82A}; 
  1121. pascal ComponentResult MCRemoveMovie(MovieController mc)
  1122.  = {0x2F3C,0x0,0x6,0x7000,0xA82A}; 
  1123.  
  1124. /*  event handling etc.  */
  1125. pascal ComponentResult MCIsPlayerEvent(MovieController mc,const EventRecord *e)
  1126.  = {0x2F3C,0x4,0x7,0x7000,0xA82A}; 
  1127. pascal ComponentResult MCSetActionFilter(MovieController mc,MCActionFilter filter)
  1128.  = {0x2F3C,0x4,0x8,0x7000,0xA82A}; 
  1129. pascal ComponentResult MCDoAction(MovieController mc,short action,void *params)
  1130.  = {0x2F3C,0x6,0x9,0x7000,0xA82A}; 
  1131.  
  1132. /*  state type things  */
  1133. pascal ComponentResult MCSetControllerAttached(MovieController mc,Boolean attach)
  1134.  = {0x2F3C,0x2,0xA,0x7000,0xA82A}; 
  1135. pascal ComponentResult MCIsControllerAttached(MovieController mc)
  1136.  = {0x2F3C,0x0,0xB,0x7000,0xA82A}; 
  1137. pascal ComponentResult MCSetControllerPort(MovieController mc,CGrafPtr gp)
  1138.  = {0x2F3C,0x4,0xC,0x7000,0xA82A}; 
  1139. pascal CGrafPtr MCGetControllerPort(MovieController mc)
  1140.  = {0x2F3C,0x0,0xD,0x7000,0xA82A}; 
  1141.  
  1142. pascal ComponentResult MCSetVisible(MovieController mc,Boolean show)
  1143.  = {0x2F3C,0x2,0xE,0x7000,0xA82A}; 
  1144. pascal ComponentResult MCGetVisible(MovieController mc)
  1145.  = {0x2F3C,0x0,0xF,0x7000,0xA82A}; 
  1146.  
  1147. pascal ComponentResult MCGetControllerBoundsRect(MovieController mc,Rect *bounds)
  1148.  = {0x2F3C,0x4,0x10,0x7000,0xA82A}; 
  1149. pascal ComponentResult MCSetControllerBoundsRect(MovieController mc,const Rect *bounds)
  1150.  = {0x2F3C,0x4,0x11,0x7000,0xA82A}; 
  1151. pascal RgnHandle MCGetControllerBoundsRgn(MovieController mc)
  1152.  = {0x2F3C,0x0,0x12,0x7000,0xA82A}; 
  1153. pascal RgnHandle MCGetWindowRgn(MovieController mc,WindowPtr w)
  1154.  = {0x2F3C,0x4,0x13,0x7000,0xA82A}; 
  1155.  
  1156. /*  other stuff  */
  1157. pascal ComponentResult MCMovieChanged(MovieController mc,Movie m)
  1158.  = {0x2F3C,0x4,0x14,0x7000,0xA82A}; 
  1159. pascal ComponentResult MCSetDuration(MovieController mc,TimeValue duration)
  1160.  = {0x2F3C,0x4,0x15,0x7000,0xA82A}; 
  1161. pascal TimeValue MCGetCurrentTime(MovieController mc,TimeScale *scale)
  1162.  = {0x2F3C,0x4,0x16,0x7000,0xA82A}; 
  1163. pascal ComponentResult MCNewAttachedController(MovieController mc,Movie m,
  1164.  WindowPtr w,Point where)
  1165.  = {0x2F3C,0xC,0x17,0x7000,0xA82A}; 
  1166. pascal ComponentResult MCPositionController(MovieController mc,Rect *movieRect,
  1167.  Rect *controllerRect,long controllerCreationFlags)
  1168.  = {0x2F3C,0xC,0x24,0x7000,0xA82A}; 
  1169.  
  1170. /*  direct event handlers  */
  1171. pascal ComponentResult MCDraw(MovieController mc,WindowPtr w)
  1172.  = {0x2F3C,0x4,0x18,0x7000,0xA82A}; 
  1173. pascal ComponentResult MCActivate(MovieController mc,WindowPtr w,Boolean activate)
  1174.  = {0x2F3C,0x6,0x19,0x7000,0xA82A}; 
  1175. pascal ComponentResult MCIdle(MovieController mc)
  1176.  = {0x2F3C,0x0,0x1A,0x7000,0xA82A}; 
  1177. pascal ComponentResult MCKey(MovieController mc,char key,long modifiers)
  1178.  = {0x2F3C,0x6,0x1B,0x7000,0xA82A}; 
  1179. pascal ComponentResult MCClick(MovieController mc,WindowPtr w,Point where,
  1180.  long when,long modifiers)
  1181.  = {0x2F3C,0x10,0x1C,0x7000,0xA82A}; 
  1182.  
  1183. /*   calls for editing  */
  1184. pascal ComponentResult MCEnableEditing(MovieController mc,Boolean enabled)
  1185.  = {0x2F3C,0x2,0x1D,0x7000,0xA82A}; 
  1186. pascal long MCIsEditingEnabled(MovieController mc)
  1187.  = {0x2F3C,0x0,0x1E,0x7000,0xA82A}; 
  1188. pascal Movie MCCopy(MovieController mc)
  1189.  = {0x2F3C,0x0,0x1F,0x7000,0xA82A}; 
  1190. pascal Movie MCCut(MovieController mc)
  1191.  = {0x2F3C,0x0,0x20,0x7000,0xA82A}; 
  1192. pascal ComponentResult MCPaste(MovieController mc,Movie srcMovie)
  1193.  = {0x2F3C,0x4,0x21,0x7000,0xA82A}; 
  1194. pascal ComponentResult MCClear(MovieController mc)
  1195.  = {0x2F3C,0x0,0x22,0x7000,0xA82A}; 
  1196. pascal ComponentResult MCUndo(MovieController mc)
  1197.  = {0x2F3C,0x0,0x23,0x7000,0xA82A}; 
  1198.  
  1199. /*  menu related stuff  */
  1200. pascal ComponentResult MCGetControllerInfo(MovieController mc,long *mcInfoFlags)
  1201.  = {0x2F3C,0x4,0x25,0x7000,0xA82A}; 
  1202.  
  1203. pascal ComponentResult MCSetClip(MovieController mc, RgnHandle theClip, RgnHandle movieClip)
  1204. = {0x2F3C,8,40,0x7000,0xA82A};
  1205. pascal ComponentResult MCGetClip(MovieController mc, RgnHandle *theClip, RgnHandle *movieClip)
  1206. = {0x2F3C,8,41,0x7000,0xA82A};
  1207.  
  1208. pascal ComponentResult MCDrawBadge(MovieController mc, RgnHandle movieRgn, RgnHandle *badgeRgn)
  1209. = {0x2F3C,8,42,0x7000,0xA82A};
  1210.  
  1211. #ifdef __cplusplus
  1212. }
  1213. #endif
  1214. enum {
  1215.  
  1216.  
  1217. /* movie controller error codes */
  1218.  cannotMoveAttachedController = -9999,
  1219.  controllerHasFixedHeight = -9998,
  1220.  cannotSetWidthOfAttachedController = -9997,
  1221.  controllerBoundsNotExact = -9996,
  1222.  editingNotAllowed = -9995,
  1223.  badControllerHeight = -9994
  1224. };
  1225.  
  1226. enum {
  1227.     kMCSetMovieSelect = 2,
  1228.     kMCRemoveMovieSelect = 3,
  1229.     kMCIsPlayerEventSelect = 7,
  1230.     kMCSetActionFilterSelect = 8,
  1231.     kMCDoActionSelect = 9,
  1232.     kMCSetControllerAttachedSelect = 10,
  1233.     kMCIsControllerAttachedSelect = 11,
  1234.     kMCSetControllerPortSelect = 12,
  1235.     kMCGetControllerPortSelect = 13,
  1236.     kMCGetVisibleSelect = 14,
  1237.     kMCSetVisibleSelect = 15,
  1238.     kMCGetControllerBoundsRectSelect = 16,
  1239.     kMCSetControllerBoundsRectSelect = 17,
  1240.     kMCGetControllerBoundsRgnSelect = 18,
  1241.     kMCGetWindowRgnSelect = 19,
  1242.     kMCMovieChangedSelect = 20,
  1243.     kMCSetDurationSelect = 21,
  1244.     kMCGetCurrentTimeSelect = 22,
  1245.     kMCNewAttachedControllerSelect = 23,
  1246.     kMCDrawSelect = 24,
  1247.     kMCActivateSelect = 25,
  1248.     kMCIdleSelect = 26,
  1249.     kMCKeySelect = 27,
  1250.     kMCClickSelect = 28,
  1251.     kMCEnableEditingSelect = 29,
  1252.     kMCIsEditingEnabledSelect = 30,
  1253.     kMCCopySelect = 31,
  1254.     kMCCutSelect = 32,
  1255.     kMCPasteSelect = 33,
  1256.     kMCClearSelect = 34,
  1257.     kMCUndoSelect = 35,
  1258.     kMCPositionControllerSelect = 36,
  1259.     kMCGetControllerInfoSelect = 37,
  1260.     kMCNewControllerFromFileSelect = 38,
  1261.     kMCSetBadgePictSelect = 39,
  1262.     kMCSetClipSelect = 40,
  1263.     kMCGetClipSelect = 41,
  1264.     kMCDrawBadgeSelect = 42
  1265. };
  1266.  
  1267. #endif
  1268.